#include "Common.h"

// CentralCache类，因为有很多ThreadCache要访问CentralCache，所以要设置成为单例模式
class CentralCache
{
public:
    void ReleaseListToSpans(void *start, size_t size);

    static CentralCache *GetInstance()
    {
        return &_Inst;
    }

    // 获取一个非空的span
    Span *GetOneSpan(SpanList &list, size_t byte_size);

    // 从中心缓存获取一定数量的对象给thread cache
    size_t FetchRangeObj(void *&start, void *&end, size_t n, size_t byte_size);

private:
    SpanList _SpanLists[NFREELIST]; // 私有成员SpanList数组，管理Span，一共有208个

private:
    CentralCache();
    ~CentralCache();
    CentralCache(const CentralCache &) = delete;
    static CentralCache _Inst;
};